package com.da.common.exception;

import com.da.common.enums.ResultEnum;
import com.da.common.utils.DailyAimResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @Author: hyacinth
 * @CreateTime: 2025-01-10
 * @Version: 1.0
 */
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    // 处理业务异常
    @ExceptionHandler(BusinessException.class)
    public DailyAimResult<Void> handleBusinessException(BusinessException e) {
        log.error("捕获到业务异常: {}", e.getMessage()); // 打印异常信息
        return DailyAimResult.error(ResultEnum.FAIL.getCode(), e.getMessage());
    }

    // 处理参数异常
    @ExceptionHandler(ParameterException.class)
    public DailyAimResult<Void> handleParameterException(ParameterException e) {
        log.error("捕获到参数校验异常: {}", e.getMessage()); // 打印异常信息
        return DailyAimResult.error(ResultEnum.FAIL.getCode(), e.getMessage());
    }

    // 处理系统异常
    @ExceptionHandler(SystemException.class)
    public DailyAimResult<Void> handleSystemException(SystemException e) {
        log.error("捕获到系统异常: {}", e.getMessage()); // 打印异常信息
        return DailyAimResult.error(ResultEnum.FAIL.getCode(), e.getMessage());
    }
}
